package com.epalmpay.service.yunstream;

import java.util.HashMap;
import java.util.Map;

import com.epalmpay.exception.ApplicationException;
import com.epalmpay.util.Response;

public interface IAppPayService {

	/**
	 * 微信外部充值，下单
	 * @param memberId
	 * @param goodsOrderPrice 支付金额
	 * @param ip
	 * @return
	 */
	public Response updateWeiXinPay(String memberId, Integer goodsOrderPrice,String ip,String homeUrl) throws ApplicationException;
	/**
	 * 微信外部消费，下单
	 * @param memberId
	 * @param goodsOrderPrice 支付金额
	 * @param ip
	 * @return
	 */
	public Response updateWeiXinGoodsPay(String memberId, Integer goodsOrderPrice,String orderId,String ip,String homeUrl) throws ApplicationException;
	/**
	 * 支付宝
	 * @param memberId
	 * @param goodsOrderPrice
	 * @param ip
	 * @param homeUrl
	 * @return
	 * @throws ApplicationException
	 */
	public Response updateAliPay(String memberId, Integer goodsOrderPrice) throws ApplicationException;
	
	
	/**
	 * 支付宝下单 消费
	 * @param memberId
	 * @param goodsOrderPrice
	 * @param ip
	 * @param homeUrl
	 * @return
	 * @throws ApplicationException
	 */
	public Response updateAliGoodsPay(String memberId, Integer goodsOrderPrice,String orderId) throws ApplicationException;
	
	/**
	 * 钱包支付提交
	 * @param memberId
	 * @param goodsOrderPrice
	 * @param ip
	 * @param homeUrl
	 * @return
	 * @throws ApplicationException
	 */
	public Response updateGoodsOrderPay(String memberId, String orderId,String payPwd,Integer price) throws ApplicationException;
	
	/**
	 * 用户发起提现
	 * @param memberId
	 * @param orderId
	 * @param tranAmt
	 * @param cardId
	 * @param payPwd
	 * @return
	 * @throws ApplicationException
	 */
	public HashMap<String, Object> updateApplyWithdraw(String memberId,Integer tranAmt,String cardId,String payPwd,Integer fee) throws ApplicationException;
	
	public Response sendApplyWithdraw(HashMap<String, Object> map, Integer tranAmt,String payPwd,Integer fee) throws ApplicationException;
	
	//银行卡快捷充值认证
    public Map<String, Object> insertBankCardVefity(String memberId,String tranAmt, String bankCode,String accNo,
    		  String accName,String certNo,String mobile,String cardCvn,String cardExpdate,String Ip) throws ApplicationException;
    //银行卡认证提交
    public Map<String, Object> updatebankcardsubmit(String memberId,String code,String Ip) throws ApplicationException;
   //已有银行卡直接支付
    public Map<String, Object> updateExistCardsubmit(String memberId,String Ip,String cardId,String tranAmt) throws ApplicationException;
    
   //银行卡快捷 购买消费 认证
    public Map<String, Object> insertbankGoodsPay(String memberId,String tranAmt, String bankCode,String accNo,
    		  String accName,String certNo,String mobile,String cardCvn,String cardExpdate,String Ip,String orgOrderNum) throws ApplicationException;
    //已绑卡 直接支付提交
    public Map<String, Object> updateExistBankGoodsPay(String memberId,String Ip,String cardId,String tranAmt,String orgOrderNum) throws ApplicationException;
    
    
   //转账
   public Map<String, Object> insertUserTransfer(String memberId, String phone,String toMemberId,String amount,String password) throws ApplicationException;
   
 //转账记录
   public Response selectTransferAnnal(String memberId) throws ApplicationException;
   
   /**
    * 实名认证
    * @param memberId
    * @param idNo
    * @param name
    * @return
    * @throws ApplicationException
    */
   public Boolean updateVerified(String memberId, String idNo, String name) throws ApplicationException;
   
   /**
    * 实名认证并修改支付密码
    * @param memberId
    * @param idNo
    * @param name
    * @param password
    * @return
    * @throws ApplicationException
    */
   public Boolean updateVerifiedPassword(String memberId, String idNo, String name,String password) throws ApplicationException;
   
   /**
    * app台卡消费
    * @param memberId
    * @param fyMerchantId
    * @param businessCode
    * @param tranAmt
    * @param actualTranAmt
    * @param nooffertranAmt
    * @param payPwd
    * @return
    * @throws ApplicationException
    */
   public Response updateTkWalletPay(String outTradeNo,Integer memberId, String deskcardId,String deskcardCode,
		   Integer tranAmt,Integer actualTranAmt,Integer nooffertranAmt,String payPwd) throws ApplicationException;
   
   public Response findMerchantName(String businessCode,String fyMerchantId,Integer memberId) throws ApplicationException;
   
   
   public Response findMerchantNameInfo(String deskcardId,String deskcardCode,Integer memberId) throws ApplicationException;
    
}
